package com.example.demo.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;  
  
public class MD5 {
  
    // 方法：计算并返回给定字符串的MD5哈希值  
    public static String getMD5Hash(String input) {  
        try {  
            // 获取MD5算法的MessageDigest实例  
            MessageDigest md = MessageDigest.getInstance("MD5");  
  
            // 更新摘要，这里将输入字符串转换为字节数组  
            md.update(input.getBytes());  
  
            // 计算哈希值，得到一个字节数组  
            byte[] digest = md.digest();  
  
            // 将字节数组转换为十六进制字符串  
            StringBuilder hexString = new StringBuilder();  
            for (byte b : digest) {  
                // 将每个字节转换为两位的十六进制数，并添加到StringBuilder中  
                String hex = Integer.toHexString(0xff & b);  
                if (hex.length() == 1) {  
                    hexString.append('0'); // 如果只有一位，前面补0  
                }  
                hexString.append(hex);  
            }  
  
            // 返回计算得到的MD5哈希值  
            return hexString.toString();  
        } catch (NoSuchAlgorithmException e) {  
            // 如果MD5算法不可用，则抛出运行时异常  
            throw new RuntimeException("MD5 algorithm not found!", e);  
        }  
    }  
  
    // 主方法：测试MD5哈希计算  
    public static void main(String[] args) {  
        // 要计算MD5哈希值的字符串  
        String inputString = "123456";
  
        // 调用getMD5Hash方法计算哈希值  
        String md5Hash = getMD5Hash(inputString);  
  
        // 打印原始字符串和计算得到的MD5哈希值  
        System.out.println("Original String: " + inputString);  
        System.out.println("MD5 Hash: " + md5Hash);  
    }  
}